[
  // add italic&bold for empty selection
  { "keys": ["*"], "command": "insert_snippet", "args": {"contents": "*${0:$SELECTION}*"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "preceding_text", "operator": "regex_match", "operand": " |\t|\\*|^|$", "match_all": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  },
  { "keys": ["_"], "command": "insert_snippet", "args": {"contents": "_${0:$SELECTION}_"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "preceding_text", "operator": "regex_match", "operand": " |\t|_|^|$", "match_all": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  },
  // add italic&bold for non-empty selection
  { "keys": ["*"], "command": "insert_snippet", "args": {"contents": "*${0:$SELECTION}*"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  },
  { "keys": ["_"], "command": "insert_snippet", "args": {"contents": "_${0:$SELECTION}_"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  },
  // remove bold with same keys, toggle
  { "keys": ["*"], "command": "plain_tasks_remove_bold",  "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "selector", "operator": "equal", "operand": "text.todo todo.bold"}
    ]
  },
  { "keys": ["_"], "command": "plain_tasks_remove_bold", "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true},
      { "key": "selector", "operator": "equal", "operand": "text.todo todo.bold"}
    ]
  },
  // same for single selection, we probably should fix it in syntax: **** defined as italic, but in fact it is [supposed to be] bold
  { "keys": ["*"], "command": "plain_tasks_remove_bold",  "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "preceding_text", "operator": "regex_contains", "operand": "\\**$", "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^\\**", "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo todo.italic"}
    ]
  },
  { "keys": ["_"], "command": "plain_tasks_remove_bold",  "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "preceding_text", "operator": "regex_contains", "operand": "__$", "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^__", "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo todo.italic"}
    ]
  },
  // save keystroke on backspace
  { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "preceding_text", "operator": "regex_contains", "operand": "\\*$", "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^\\*", "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  },
  { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "preceding_text", "operator": "regex_contains", "operand": "_$", "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^_", "match_all": true },
      { "key": "selector", "operator": "equal", "operand": "text.todo"}
    ]
  }
]
